package com.aspose.cells.examples.asposefeatures.datahandling;

import com.aspose.cells.Cell;
import com.aspose.cells.Cells;
import com.aspose.cells.CellsHelper;
import com.aspose.cells.ReferredArea;
import com.aspose.cells.ReferredAreaCollection;
import com.aspose.cells.Workbook;
import com.aspose.cells.examples.Utils;

public class TracingPrecedentsAndDependents
{
    public static void main(String[] args) throws Exception
    {
        // The path to the documents directory.
        String dataDir = Utils.getDataDir(TracingPrecedentsAndDependents.class);

        //Instantiating a Workbook object
        Workbook workbook = new Workbook(dataDir + "workbook.xls");

        Cells cells = workbook.getWorksheets().get(0).getCells();
        Cell cell = cells.get("A12");

        //Tracing precedents of the cell A12.
        //The return array contains ranges and cells.
        ReferredAreaCollection ret = cell.getPrecedents();

        //Printing all the precedent cells' name.
        if(ret != null)
        {
          for(int m = 0 ; m < ret.getCount(); m++)
          {
            ReferredArea area = ret.get(m);
            StringBuilder stringBuilder = new StringBuilder();
            if (area.isExternalLink())
            {
                stringBuilder.append("[");
                stringBuilder.append(area.getExternalFileName());
                stringBuilder.append("]");
             }
             stringBuilder.append(area.getSheetName());
             stringBuilder.append("!");
             stringBuilder.append(CellsHelper.cellIndexToName(area.getStartRow(), area.getStartColumn()));
             if (area.isArea())
              {
                  stringBuilder.append(":");
                  stringBuilder.append(CellsHelper.cellIndexToName(area.getEndRow(), area.getEndColumn()));
              }
              System.out.println("Tracing Precedents: " + stringBuilder.toString());
           }
        }

        //Get the A1 cell
        Cell c = cells.get("A5");
        //Get the all the Dependents of A5 cell
        Cell[] dependents = c.getDependents(true);
        for (int i = 0; i< dependents.length; i++)
        {
             System.out.println("Tracing Dependents: " + dependents[i].getWorksheet().getName() +dependents[i].getName() + ":" + dependents[i].getIntValue());
        }
    }
}
